#include<iostream>
#include<cstring>
#include<cerrno>
#include<unistd.h>
#include<sys/types.h>
#include<sys/stat.h>
#include<fcntl.h>
#include"common.h"

using namespace std;

int main()
{
    //服务端
    // 1. 创建命名管道文件
    int ret=mkfifo(fifo_name.c_str(),mode);
    if(ret < 0)
    {
        cerr<< " mkfifo fail! errno: "<< errno <<" | "<<strerror(errno);
        exit(0);
    }
    
    // 2. 以读的方式打开文件
    int rfd=open(fifo_name.c_str(), O_RDONLY);
    if(rfd<0)
    {
        cerr << "open fail! errno: " << errno << " | " << strerror(errno) << endl;
        exit(0);
    }

    //3. 读取数据
    while(true)
    {
        char buff[64];
        int n=read(rfd,buff,sizeof(buff)-1);
        buff[n]='\0';

        if(n > 0)
        {
            cout << "Server get message# " << buff << endl;
        }
        else if (n == 0)
        {
            cout << "写端关闭，读端读取到0，终止读端" << endl;
            break;
        }
        else
        {
            cout << "读取异常" << endl;
            break;
        }
    }

    close(rfd);
    unlink(fifo_name.c_str());  //删除命名管道文件

    return 0;

}